package com.ruoyi.web.controller.common;

import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.entity.system.BoatStatusInfo;
import com.ruoyi.common.core.domain.entity.system.HeartbeatMsg;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.system.service.IBoatStatusInfoService;
import com.ruoyi.system.service.IHeartbeatMsgService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 获取船只信息的Controller。
 */
@RestController
@RequestMapping("/boatStatusInfo")
public class BoatStatusInfoController extends BaseController {

    @Autowired
    private IHeartbeatMsgService heartbeatMsgService;

    @Autowired
    private IBoatStatusInfoService boatStatusInfoService;

    /**
     * 获取船只状态信息列表。
     *
     * @param meterId  终端id
     * @param infoType 要获取的状态信息类型。
     *                 * 1：位置信息。
     *                 * 2：船机工况信息。
     *                 * 3：发动机故障信息。
     *                 * 4：报警信息。
     *                 * 5：当前驾驶循环统计信息。
     *                 * 6：配置心跳信息-J1939。
     *                 * 7：锁车相关信息。
     * @return
     */
    @GetMapping("/list")
    public TableDataInfo list(@RequestParam(required = true) Long meterId, Integer infoType) {
        HeartbeatMsg heartbeatMsg = new HeartbeatMsg();
        heartbeatMsg.setMeterId(meterId);

        //先获取原始报文数据
        startPage();
        List<HeartbeatMsg> heartbeatMsgList = heartbeatMsgService.selectHeartbeatMsgList(heartbeatMsg);
        List<BoatStatusInfo> boatStatusInfos = boatStatusInfoService.list(meterId, heartbeatMsgList, infoType);

        //获取heartbeatMsgList分页对象Page的包装类
        PageInfo pageInfo = new PageInfo(heartbeatMsgList);

        return getDataTable(boatStatusInfos, pageInfo.getTotal());
    }

}
